const router = require('koa-router')()
const menu = require('../model/menusSchema')
const utils = require('../utils/utils')
router.prefix('/menu')


//菜单列表渲染
router.get('/list', async (ctx) => {
  var { menuName, menuState } = ctx.request.query
  try {
    let params = {}
    if (menuName) params.menuName = { $regex: menuName } //{ $regex: menuName }这个可以起到模糊查询的作用
    if (menuState) params.menuState = menuState
    let rootlist = await menu.find(params).lean()
    let res = utils.TreeMenuList(rootlist)//把普通数组转化成树形结构
    // console.log('res',res);
    
    ctx.body = utils.success(res)
  } catch (err) {
    ctx.body = utils.fail(`菜单列表渲染失败${err}`)
  }
})

//菜单列表新增和编辑
router.post('/operate', async (ctx) => {
  const params = ctx.request.body
  // console.log("params",params);
  const { active, menuName ,_id} = params
  if (active === 'create') {
    if (!menuName) {
      ctx.body = utils.fail('参数错误')
      return
    }
    //防止出现重复
    let res = await menu.findOne({ $or: [{ menuName }] }, '_id menuName')
    if (res) {
      ctx.body = utils.fail('菜单名称已存在')
      return
    } else {
      let res = await menu.create(params)
      ctx.body = utils.success(res, '菜单创建成功')
    }
  } else if (active === 'add') {
    let res = await menu.create(params)
    ctx.body = utils.success(res, '菜单新增成功')
  }else{
    let res = await menu.findOneAndUpdate({ _id }, params)
    ctx.body = utils.success(res, '菜单更新成功')
  }
})

//菜单删除
router.post('/delete', async (ctx) => {
  let _id = ctx.request.body
  try {
    let res =await menu.findByIdAndDelete(_id)
    await menu.deleteMany({parentId:{$all: _id}})
    ctx.body = utils.success(res, '菜单删除成功')
  } catch (error) {
    ctx.body = utils.fail(error.message)
  }
})


//菜单恢复
router.post('/update', async (ctx) => {

})

module.exports = router
